Základy R

Marek Prokop

PROKOP software s.r.o.

21. 2. 2024

V této části se naučíte:

  1. Co je R
  2. Proč je R vhodné pro SEO
  3. Jak R nainstalovat, nastavit a udržovat
  4. Jak pracovat s konzolí, skripty a dokumenty Quarto
  5. Jak používat Markdown v dokumentech Quarto
  6. Které základní datové typy a operace R budete potřebovat

Co je R

R je programovací jazyk pro statistiku a práci s daty

  • R je open source.
  • R je zadarmo.
  • R běží na všech běžných operačních systémech.
  • R má rozsáhlou a velmi přátelskou komunitu.
  • R může běžet i v cloudu.
  • Jako vývojové a uživatelské prostředí pro R se nejastěji používá RStudio.

Proč používat R pro SEO

  • Na R se můžete dívat jako na Excel, který je rychlejší, zvládá větší data a umí toho víc.
  • Skripty uchovají postup řešení. Když teď něco uděláte, dokážete i po roce zjist, jak jste to udělali, a proč zrovna takhle.
  • R usnadňuje automatizaci. Cokoli v R uděláte, můžete kdykoli později snadno zopakovat s jinými daty či parametry.
  • R umí přistupovat k datům Search Console, Google Analytics a dalších nástrojů, které mají API.
  • V R jdou tvořit luxusní vizualizace, reporty, dashboardy a mnoho jiných výstupů. I tato prezentace je napsaná v R.

Motivační obrázek :-)

Instalace a nastavení R a RStudia

Instalace R

Především potřebujete základní jazyk R. Nainstalujete ho z adresy https://cloud.r-project.org/.

Instalace RStudia

Nainstalujte bezplatnou verzi RStudio Desktop z adresy https://posit.co/download/rstudio-desktop/.

Nastavení RStudia – .RData

Nastavení RStudia – native pipe

Balíčky

Funkčnost základního R rozšiřují balíčky (packages). Pro začátek si nainstalujte balíčky tidyverse, usethis, devtools a searchConsoleR.

Menu Tools příkaz Install Packages

Práce v RStudiu

Založte si „školní” projekt

Příkaz New Project… z menu File

Organizace projektů v RStudiu

Projekty používejte vždy a dobře si promyslete strukturu složek. Já používám:

  • Jednu kořenovou složku na všechno v R.

  • V ní mám podsložky:

    • Clients – pro všechny klienty a klientské projekty.

    • Trials – na různé pokusy, o kterých ještě nevím, co z nich bude.

    • Learning – na kurzy, které si občas dělám.

    • Public – na projekty, které publikuju veřejně jako opensource.

  • V každé této podsložce pak zakládám samostatné projekty. Některé projekty pak ještě člením na další podsložky.

Konzole, skripty, Quarto

Postupně vám naživo ukážu práci v konzoli, ve skriptu a v dokumentu Quarto.

  • Práce k v kozoli se hodí pro rychlé ověření nějaké funkce či hodnoty, nastavení něčeho, vyzkoušení něčeho. Já sám používám konzoli výjimečně.
  • Skripty se hodí pro definici funkcí, nějaký automatický proces, psaní balíčků apod. Jdou spouštět i přímo z operačního systému.
  • Dokumenty Quarto se hodí na vše ostatní, tedy zejména na vlastní analýzy, reporty či prezentace pro klienty apod.

Více o Quartu a Markdownu

Proč Quarto / R Markdown

  • Všechno, co uděláte, budete mít uložené a můžete se k tomu kdykoli vrátit.
  • Ke kódu si můžete psát vlastní komentáře – co chcete udělat, proč to děláte zrovna takhle, co z toho vyplývá atd.
  • Můžete snadno spouštět jak celý kód, tak jeho logické části.
  • Výsledky vidíte rovnou u kódu, který je vytvořil.
  • Výstupy můžete snadno sdílet s lidmi, kteří R nepoužívají.

Druhy R Markdownu

Podle chování

  • R Notebook

  • R Document

  • R Presentation

  • Quarto Document

  • Quarto Presentation

Podle výstupu

  • HTML

  • PDF

  • Word

  • Powert Point

  • Markdown pro Github

  • a asi 20 dalších formátů

Pro začátek vám bude stačit jenom Quarto Document s výstupem do HTML.

Markdown pro běžný text

# Tohle je nadpis 1. úrovně

Tohle je běžný odstavec. Víc odstavců je od sebe odděleno dvěma Entry čili prázdným řádkem.

## Tohle je nadpis 2. úrovně

Tohle je příklad [odkazu v textu](https://example.com). A tohle je příklad odrážek:

- první odrážka,
- druhá odrážka,
- třetí odrážka.

Jdou udělat i číslované body, které se automaticky očíslují podle pořadí:

1. První bod.
1. Druhý bod.
1. Poslední bod.

Markdown pro běžný text – výsledek

Markdown s kódem v R

R Mardown je Markdown, do kterého jsou zamíchané kusy eRkového kódu.

Libovolný text v Markdownu…

```{r}
5 + 15
```

Jiný libovolný text v Markdownu…

```{r}
100 - 10
```

Blok kódu v R přidáte klávesovou zkratkou Ctrl+Alt+I.

Výpis tabulky

mtcars

Zobrazení grafu

library(ggplot2)
mtcars |> 
  ggplot(aes(hp, mpg)) +
  geom_point()

Základní datové typy v R

Čísla

Číslo je prostě číslo.

15
[1] 15
3.14
[1] 3.14

S čísly jde počítat

10 + 20
[1] 30
20 - 5
[1] 15
20 / 5
[1] 4
(5 * 4) / 2
[1] 10

Znakové řetězce

Znakový řetězec se dává do uvozovek nebo apostrofů.

"Tohle je znakový řetězec"
[1] "Tohle je znakový řetězec"
'A tohle je taky znakový řetězec'
[1] "A tohle je taky znakový řetězec"
'Tohle je znakový řetězec s "uvozovkami" uvnitř.'
[1] "Tohle je znakový řetězec s \"uvozovkami\" uvnitř."

Řetězce spojuje funkce paste.

paste("první řetězec", "druhý řetězec")
[1] "první řetězec druhý řetězec"

Nebo s čárkou mezi místo mezery:

paste("první řetězec", "druhý řetězec", sep = ",")
[1] "první řetězec,druhý řetězec"

Nebo bez ničeho mezi:

paste("první řetězec", "druhý řetězec", sep = "")
[1] "první řetězecdruhý řetězec"

Funkce

  • Funkce fungují jako v Excelu, ale většinou se jmenují jinak.
  • Parametry bez jména musí být v přesném pořadí.
  • Pojmenované parametry mohou být v libovolném pořadí.
  • Nápovědu získáte klávesou F1 nebo otazníkem před funkcí.

Příklady funkcí

abs(-15)
[1] 15
round(15.9876, digits = 2)
[1] 15.99
floor(15.9876)
[1] 15
max(1, 2, 3, 4, 5)
[1] 5

Vektory

Proč se před každým výsledkem zobrazuje [1]?

  • Protože základní datové typy v R (čísla, znakové řetězce, logické hodnoty a tzv. faktory) jsou vždy vektory.

  • Vektor je uspořádaná posloupnost jedné či více hodnot.

  • Výsledkem následující operace je tedy číselný vektor s jednou hodnotou.

3 + 5
[1] 8

Vytváření vektorů

Když chcete vytvořit vektor s více než jednou hodnotou, máte několik možností.

Např. posloupnost:

1:10
 [1]  1  2  3  4  5  6  7  8  9 10

Nebo použijete funkci c:

c(1, 2, 3, 6, 5, 4)
[1] 1 2 3 6 5 4

Počítání s vektory

S vektory jde normálně počítat a vlastně dělat skoro cokoli.

c(1, 2, 3) * 10
[1] 10 20 30
c(1, 2, 3) * c(1, 2, 3)
[1] 1 4 9
paste(
  c(
    "první vektor, první řetězec", 
    "první vektor, druhý řetězec"
  ), 
  c(
    "druhý vektor, první řetězec", 
    "druhý vektor, druhý řetězec"
  ),
  sep = " - "
)
[1] "první vektor, první řetězec - druhý vektor, první řetězec"
[2] "první vektor, druhý řetězec - druhý vektor, druhý řetězec"

Nápověda k funkcím

R má integrovanou nápovědu ke všem funkcím. Vyvoláte ji:

  • Klávesou F1 na názvu funkce v konzoli, skriptu, nebo bloku kódu v R Markdownu.
  • Otazníkem a názvem funkce.
?rnorm

Nápověda se v RStudiu zobrazí na panelu Help.

Vnořování funkcí

Představte si, že potřebujete vnořit jednu funkci do druhé, např.:

round(runif(n = 40, min = 1, max = 10), digits = 2)
 [1] 9.85 4.93 5.60 4.09 1.78 3.72 2.95 1.04 3.94 3.83 2.91 7.50 7.15 3.21 3.70
[16] 6.22 4.03 7.33 8.69 4.95 2.51 6.13 8.13 7.00 4.79 5.38 3.87 3.75 7.12 2.18
[31] 2.00 4.55 5.50 3.46 6.53 9.08 9.21 3.27 2.03 5.16

Pipes neboli řetězení funkcí

V R budete používat fakt hodně funkcí a vnořování by bylo brzy nepřehledné. Proto existuje operátor pipe.

runif(n = 40, min = 1, max = 10) |> 
  round(digits = 1)
 [1] 2.1 6.5 6.3 9.9 1.5 7.0 8.0 2.1 6.4 8.8 7.1 1.3 1.7 8.7 2.5 2.8 2.6 1.5 1.3
[20] 1.2 3.9 8.7 7.7 8.4 8.7 3.0 9.6 4.0 5.1 2.7 4.3 1.7 9.4 4.6 3.4 5.1 5.0 1.9
[39] 5.9 9.6

Porovnání pipes a vnořování

Pipes

```{r}
objekt |> 
  prvni_funkce(druhy_parametr_prvni_funkce, treti_parametr_prvni_funkce) |> 
  druha_funkce(druhy_parametr_druhe_funkce) |> 
  treti_funkce(druhy_parametr_treti_funkce) |> 
  ctvrta_funkce() |> 
  pata_funkce(druhy_parametr_pate_funkce)
```

Vnořování

```{r}
pata_funkce(
  ctvrta_funkce(
    treti_funkce(
      druha_funkce(
        prvni_funkce(
          objekt, druhy_parametr_prvni_funkce, treti_parametr_prvni_funkce
        ), druhy_parametr_druhe_funkce
      ), druhy_parametr_treti_funkce
    )
  ), druhy_parametr_pate funkce
)
```

Ve starších příkladech najdete pipe, která vypadá takhle %>%. Je to plusmínus totéž.

Objekty

Výsledky jakýkoli operací (neboli výrazů) můžete ukládat do pojmenovaných objektů.

muj_objekt <- runif(n = 20, min = 1, max = 10)

muj_objekt |> 
  round(digits = 1)
 [1] 2.0 5.9 1.5 2.8 5.1 4.4 7.5 5.4 5.3 8.5 1.8 3.7 2.6 5.9 2.1 1.7 8.4 7.7 3.4
[20] 6.1
  • Jména objektů se mohou skládat jen z písmen anglické abecedy, podtržítek a teček.
  • Ukládají se do tzv. prostředí (environment).
  • Po ukončení R (resp. RStudia) nebo po restartu session zmizí.

Klávesové zkratky

Akce Windows & Linux Mac
Vlož blok kódu (chunk) Ctrl + Alt + I Cmd + Option + I
Vlož přiřazení (znaky <-) Alt + - Option + -
Vlož operátor pipe (|>) Ctrl + Shift + M Cmd + Shift + M
Proveď řádek kódu s kurzorem Ctrl + Enter Cmd + Enter
Proveď blok kódu s kurzorem Ctrl + Shift + Enter Cmd + Shift + Enter
Proveď všechny bloky v souboru Ctrl + Alt + R Cmd + Option + R
Proveď bloky nad kurzorem Ctrl + Alt + P Cmd + Option + P
Zobraz celý dokument v HTML Ctrl + Shift + K Cmd + Shift + K
Nápověda k funkci s kurzorem F1 F1
Nápověda/dokončení kódu Ctrl + Space Cmd + Space


Pokud si je nechcete pamatovat, všechny mají i své tlačítko buď na toolbaru nad editorem, nebo přímo v pravém horním rohu každého bloku kódu. Funkce tlačítek se vám zobrazí po najetí myši.